import { IsEmail, IsNotEmpty, IsString, MinLength, MaxLength, Length, IsNumberString } from 'class-validator';

export class LoginDto {
  @IsEmail({}, { message: '请输入正确的邮箱格式' })
  @IsNotEmpty({ message: '邮箱不能为空' })
  email: string;

  @IsString()
  @IsNotEmpty({ message: '密码不能为空' })
  @MinLength(6, { message: '密码长度不能小于6位' })
  @MaxLength(18, { message: '密码长度不能大于18位' })
  password: string;
}

export class RegisterDto {
  @IsEmail({}, { message: '请输入正确的邮箱格式' })
  @IsNotEmpty({ message: '邮箱不能为空' })
  email: string;

  @IsString()
  @IsNotEmpty({ message: '用户名不能为空' })
  @MaxLength(12, { message: '用户名长度不能大于12位' })
  username: string;

  @IsString()
  @IsNotEmpty({ message: '密码不能为空' })
  @MinLength(6, { message: '密码长度不能小于6位' })
  @MaxLength(18, { message: '密码长度不能大于18位' })
  password: string;

  @IsNumberString({}, { message: '验证码必须为数字' })
  @Length(4, 4, { message: '验证码长度必须为4位' })
  @IsNotEmpty({ message: '验证码不能为空' })
  code: string;
}

export class ForgotDto {
  @IsEmail({}, { message: '请输入正确的邮箱格式' })
  @IsNotEmpty({ message: '邮箱不能为空' })
  email: string;

  @IsNumberString({}, { message: '验证码必须为数字' })
  @Length(4, 4, { message: '验证码长度必须为4位' })
  @IsNotEmpty({ message: '验证码不能为空' })
  code: string;

  @IsString()
  @IsNotEmpty({ message: '新密码不能为空' })
  @MinLength(6, { message: '新密码长度不能小于6位' })
  @MaxLength(18, { message: '新密码长度不能大于18位' })
  password: string;
}